package model

// Order 订单交易
type Order struct {
	OrderId string `gorm:"primaryKey"` //交易编号
	Uid     string `gorm:"index"`      //用户编号

	//订单交易信息
	Status     OrderStatus //待支付、已支付、已完成、已取消、已退款
	TxnDate    string      `gorm:"index"` //交易日期 t8
	TxnAmt     uint64      //订单金额、支付金额
	PayType    string      //支付类型 微信支付
	PayMchid   string      //支付商户号
	PayNo      string      //支付平台交易号
	PayTime    string      //支付完成时间，根据支付结果通知获取
	PayTimeout string      //支付超时时间 t14
	RefundTime string      //退款时间 t14
	CancelTime string      //取消时间t14
	FinishTime string      //完成时间t14

	//订单产品信息，订单如果有多个产品取第一个
	ProdId    string      //
	ProdName  string      //名称
	ProdNum   uint64      //数量
	ProdPrice uint64      //价格
	ProdType  ProductType //产品类型：会员卡
	ProdThumb string      //产品图片

	Domain  string //下单网站域名
	Ip      string //下单用户IP
	Message string //订单留言，用户填写的内容
	Remark  string //订单备注，商家填写的内容
	Ctime   string `gorm:"index"` //
	Mtime   string //
}

func (Order) TableName() string {
	return "order"
}

// OrderStatus 交易状态
type OrderStatus string

const (
	ORDER_UNPAID OrderStatus = "unpaid" // 待支付
	ORDER_PAYSUC OrderStatus = "paysuc" // 已支付
	ORDER_REFUND OrderStatus = "refund" // 已退款
	ORDER_CANCEL OrderStatus = "cancel" // 已取消
	ORDER_FINISH OrderStatus = "finish" // 已完成
)

var OrderStatusLabel = map[OrderStatus]string{
	ORDER_UNPAID: "待支付",
	ORDER_PAYSUC: "已支付",
	ORDER_REFUND: "已退款",
	ORDER_CANCEL: "已取消",
	ORDER_FINISH: "已完成",
}

// PayType 支付方式
type PayType string

const (
	PayType_WX_JSAPI  PayType = "wx_jsapi"
	PayType_WX_NATIVE PayType = "wx_native"
)
